1. Field of the Invention
The present invention relates in general to a system for encoding a field programmable gate array (FPGA) program so that it can be used to program only a particular set of FPGAs capable of decoding the program.
2. Description of Related Art
A field programmable gate array (FPGA) includes a large number of logic blocks linked to one another and to FPGA input and output (I/O) terminals through signal routing devices. Routing data stored in the FPGA controls the logic the FPGA carries out on its input signals to produce its output signals by telling the routing devices how to route data between the logic blocks and the FPGA""s I/O terminals. An FPGA program is therefore simply a sequence of routing data supplied as input to the FPGA""s programming terminals. We typically program (or reprogram) an FPGA by supplying a data file containing the routing data to an FPGA programming device which then writes that routing data into the FPGA.
FPGA program developers or distributors have in interest in preventing unlicensed use of their FPGA programs. For example an FPGA program developer or distributor may find it convenient to allow customers to download FPGA programs from a public internet site, but may want to prevent others from using those programs without first obtaining a license. Or when an FPGA program developer licenses a customer to program only a particular set of FPGAs, the program developer would like to prevent that customer, or anyone else, from using that FPGA program to program other FPGAs.
Some computer programs are encrypted so that they cannot be used to program a computer unless first decrypted in a manner determined by a special code (an xe2x80x9cencryption keyxe2x80x9d). When a customer purchases a license to use the software, the licensor provides the customer with the correct encryption key. When the customer thereafter obtains the software and invokes its installation program, the installation program queries the customer for the encryption key. The installation program then decrypts the program in accordance with the key and installs the decrypted version of the program on the customer""s computer. Thus even though someone other than the customer may download the encrypted program, that person will not be able to install that program on a computer unless he is able to provide the installation program with the correct encryption key.
A similar encryption system could be used to encrypt FPGA programs by equipping the FPGA programming device with an decryption circuit or program requiring the user to provide the appropriate encryption key. However while such an encryption system would reduce the chance that an FPGA program will be used by someone other than the customer, the customer or anyone else having access to the encryption key could use the FPGA program to program any number of FPGAs. Also the decrypted version of the FPGA program could be intercepted at the output of the FPGA programming device and thereafter used to program FPGAs without need for decryption.
What is needed is a system for preventing anyone from using an FPGA program to program other than a particular set of FPGAs.
A field programmable gate array (FPGA) implements logic controlled by an FPGA program (a data sequence) written into the FPGA. In accordance with one aspect the invention, the FPGA program to be written into that memory array is first encrypted so that it must be decrypted in accordance with a predetermined encryption key before being written into the FPGA.
In accordance with another aspect of the invention, an integrated circuit (IC) implementing the FPGA to be programmed by an encrypted FPGA program includes an internal decryption circuit for receiving and decrypting the encrypted FPGA program in accordance with the appropriate encryption key to produce a decrypted FPGA program. The decryption circuit then writes the decrypted FPGA program into the FPGA""s internal memory array. Thus the encrypted FPGA program can""t be used to program FPGAs not equipped with a decryption circuit capable of decrypting the FPGA program in accordance with the appropriate encryption key. Also since the decryption circuit and FPGA are implemented within the same IC, the output terminals of the decryption circuit are not readily accessible. The decrypted FPGA program output of the decryption circuit therefore cannot be not readily intercepted and copied.
In an alternative embodiment of the invention, the decryption circuit and the FPGA are implemented on separate IC chips, but the chips are interconnected and enclosed within the same IC package so that the decrypted FPGA program output of the decryption circuit is not readily accessible.
It is accordingly an object of the invention to provide a system for preventing use of an FPGA program for programming FPGAs other than a particular set of FPGAs for which the FPGA program is intended.
The concluding portion of this specification particularly points out and distinctly claims the subject matter of the present invention. However those skilled in the art will best understand both the organization and method of operation of the invention, together with further advantages and objects thereof, by reading the remaining portions of the specification in view of the accompanying drawing(s) wherein like reference characters refer to like elements.